package com.hundsun.aitest.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.hundsun.aitest.model.ai.AutoCase;
import com.hundsun.aitest.model.blade.TestCaseRequest;
import com.hundsun.aitest.model.blade.Variable;
import com.hundsun.aitest.model.plat.InterfaceDict;


public interface TestCasesService {

    /**
     * 不同的项目，APIKey不同，所以需要更新APIKey
     * @param project
     */
    void updateProjectInfo(String project);

    /**
     * 根据接口信息查询脚本id，若无接口对应的脚本，则新建脚本返回ID
     * @param interfaceDict
     */
    InterfaceDict queryScriptId(InterfaceDict interfaceDict);

    InterfaceDict patternAndGetInterfaceDetail(String project, String testPoint) throws JsonProcessingException;

    /**
     * 上传测试用例到blade服务器。
     * @param request 包含测试用例信息的请求对象。
     * @return 上传操作的结果。
     */
    String uploadTestCase(TestCaseRequest request);

    /**
     * 根据 AutoCase 构建blade要求的测试用例请求对象。
     *
     * @param apiToken API 访问令牌。
     * @param account 用户账户。
     * @param nodePath 节点路径。
     * @param autoCase 包含测试用例数据的 AutoCase 对象。
     * @param attachInfo 用于传递补充的信息，如勾稽用例传递checkCode
     * @return 构建好的测试用例请求对象。
     */
    TestCaseRequest buildTestCaseRequest(String apiToken, String account, String nodePath, AutoCase autoCase,String attachInfo);

    /**
     * 上传变量到blade服务器。
     * @param request
     * @return
     */
    String uploadVarible(Variable request);

    /**
     * 根据 jsonString 构建blade要求的变量请求对象。
     *
     * @param apiToken API 访问令牌。
     * @param account 用户账户。
     * @param nodePath 节点路径。
     * @param reportCdoe 勾稽编码。
     * @return 构建好的变量请求对象。
     */
    Variable buildVariableRequest (String apiToken, String account, String nodePath, String reportCdoe);

}
